/**
 * 登录弹窗状态管理 Composable
 * 用于全局控制登录/注册弹窗的显示/隐藏和状态
 */

export const useLoginDialog = () => {
  // 弹窗显示状态
  const dialogVisible = useState('loginDialogVisible', () => false)
  
  // 当前活动标签页 ('login' | 'register')
  const activeTab = useState<'login' | 'register'>('loginDialogActiveTab', () => 'login')
  
  // 登录成功后的重定向路径
  const redirectPath = useState('loginDialogRedirectPath', () => '')

  /**
   * 显示登录弹窗
   * @param tab - 显示哪个标签页 ('login' | 'register')
   * @param redirect - 登录成功后的重定向路径（可选）
   */
  const showLoginDialog = (tab: 'login' | 'register' = 'login', redirect?: string) => {
    activeTab.value = tab
    dialogVisible.value = true
    if (redirect) {
      redirectPath.value = redirect
    }
  }

  /**
   * 隐藏登录弹窗并清空状态
   */
  const hideLoginDialog = () => {
    dialogVisible.value = false
    // 不立即清空 redirectPath，等下次打开时再设置
    // 这样可以在登录成功后使用该路径
  }

  /**
   * 切换标签页
   * @param tab - 目标标签页
   */
  const switchTab = (tab: 'login' | 'register') => {
    activeTab.value = tab
  }

  /**
   * 清空重定向路径
   */
  const clearRedirectPath = () => {
    redirectPath.value = ''
  }

  return {
    // 状态
    dialogVisible,
    activeTab,
    redirectPath,
    
    // 方法
    showLoginDialog,
    hideLoginDialog,
    switchTab,
    clearRedirectPath
  }
}

